/**
 * build task regist
 */

'use strict';

var $ = require('gulp-load-plugins')();
var config = require('./config');
var util = require('./util');
var del = require('del');
var fs = require('fs');

module.exports = function (gulp, APP_PATH, APP_DIST_PATH) {
	if (!gulp) {
		return;
	};

	// 清除文件夹   
	gulp.task('clean', del.bind(null, [APP_DIST_PATH]));

	// 样式预处理
	gulp.task('styles', function () {
	    return gulp.src([APP_PATH + 'scss/*.scss'])
	        // .pipe($.sass().on('error', util.logError))
	        .pipe($.if('*.css', $.csso())) // 压缩
	        .pipe(gulp.dest(APP_PATH + 'css/'));
	});

	// watch并执行了该任务，先处理一些依赖，增加了styles_special任务，替换ruby的全局sass任务 watch.bat
	// 处理html
	gulp.task('build_html', function () {
		return gulp.src([APP_PATH + 'html/**/*.html', APP_PATH + 'html/*.html'])
	        .pipe($.replace(util.TAG_CSS_REPLACE, function(tag){ // 替换css标记
	            return util.replaceStyleFile(tag, APP_PATH);
	        }))
	        .pipe($.replace(util.TAG_HTML_REPLACE, function(tag){ // 替换html标记
	            return util.replaceHtmlFile(tag, APP_PATH);
	        }))
	        .pipe($.replace(util.TAG_JS_REPLACE, function(tag){ // 替换js标记
	            return util.replaceJs(tag, APP_PATH);
	        }))
	        .pipe($.replace(util.TAG_OPPOSITE_REPLACE, function(tag){ // 替换相对路径
	      		return config.WEB_STATIC_URL_PREFIX; 
	    	})) // 替换路径
	        // .pipe($.uglifyInline()) // 压缩行内js
	        // .pipe($.if('*.html', $.minifyHtml({comments:true,spare:true,quotes:true}))) // 压缩html
	        .pipe($.replace(/\"(\S+\.css)\"/gi, function(tag1, tag2){
	            return util.replaceTimeStamp(tag2)
	        }))
	        .pipe($.replace(/\"(\S+\.js)\"/gi, function(tag1, tag2){
	            return util.replaceTimeStamp(tag2)
	        }))
	        .pipe($.replace('&quot;', '"'))
	        .pipe($.replace('&apos;', "'"))
			.pipe(gulp.dest(APP_DIST_PATH));// 输出html;

	});

	return gulp;

}
